home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Belgian Amiga Club - ADF Collection
/
BS1 part 34.zip
/
BS1 part 34
/
GFA basic training.adf
/
Erweiterung
/
SCROLL_COPPER_SCHATTEN.LST
< prev
next >
Wrap
File List
|
1989-06-01
|
4KB
|
179 lines
' Scroll-Programm + Diagonal + Copper + Schatten
' Mit Graphics-Library Routinen
' Und Copper Farben unter der Laufschrift
'
' Bildschirminitialisierung
'
OPENS 1,0,0,350,256,2,0
adr%=SCREEN(1)+84
lÄufe|=1
text$=" GFA-Basic präsentiert: einen Test-String zum Scrollen von Texten im Screen ohne Window !!! Ist Alles Ready für mehr Text? Aber klar!!!!! "
text$=text$+" Was ist das denn für ein Schatten ????"+SPACE$(28)
zeile|=215
diag|=1
' Das Hauptprogramm
@usercop_lÄnge
@memory_copperbereit
@user_copper_an
@scroll_it(lÄufe|,text$,zeile|,adr%,diag|)
@user_copper_aus
@aus
EDIT
' Scroll-Routine
PROCEDURE scroll_it(max_lauf|,text$,pix_zeile|,r_adr%,diag|)
lÄnge|=LEN(text$)
~Forbid()
RASTPORT adr%
REPEAT
textpos%=VARPTR(text$)
FOR i|=1 TO lÄnge|
~Move(adr%,340,pix_zeile|+7)
~Text(adr%,textpos%+i|,1)
'
FOR j|=0 TO 1
~WaitTOF()
~ScrollRaster(adr%,6,diag|,0,pix_zeile|-120,350,pix_zeile|+8)
NEXT j|
'
NEXT i|
INC loops|
UNTIL loops|=max_lauf|
RETURN
PROCEDURE aus
~Permit()
CLOSES 1
RETURN
' User-Copper
> PROCEDURE datas
DATA $0180,$0000
DATA $0102,&x0000000000000011
DATA $d701,$fffe
DATA $0182,$0000
DATA $0186,$0f44
DATA $0184,$0f44
DATA $0180,$0f00
DATA $d801,$fffe
DATA $0180,$0f10
DATA $d901,$fffe
DATA $0180,$0f20
DATA $da01,$fffe
DATA $0180,$0f40
DATA $db01,$fffe
DATA $0180,$0f60
DATA $dc01,$fffe
DATA $0180,$0f70
DATA $dd01,$fffe
DATA $0180,$0f80
DATA $de01,$fffe
DATA $0180,$0f90
DATA $df01,$fffe
DATA $0180,$0fa0
DATA $e001,$fffe
DATA $0180,$0fb0
DATA $e101,$fffe
DATA $0180,$0fc0
DATA $e201,$fffe
DATA $0180,$0fd0
DATA $e301,$fffe
DATA $0180,$0fe0
DATA $e401,$fffe
DATA $0180,$0ff0
DATA $e501,$fffe
DATA $0180,$0ff1
DATA $e601,$fffe
DATA $0180,$0ff2
DATA $e701,$fffe
DATA $0180,$0ff3
DATA $e801,$fffe
DATA $0180,$0ff4
DATA $e901,$fffe
DATA $0180,$0ff5
DATA $ea01,$fffe
DATA $0180,$0ef5
DATA $eb01,$fffe
DATA $0180,$0df5
DATA $ec01,$fffe
DATA $0180,$0cf5
DATA $ed01,$fffe
DATA $0180,$0bf4
DATA $ee01,$fffe
DATA $0180,$0af3
DATA $ef01,$fffe
DATA $0180,$09f2
DATA $f001,$fffe
DATA $0180,$08f1
DATA $f101,$fffe
DATA $0180,$07f2
DATA $f201,$fffe
DATA $0180,$06e3
DATA $f301,$fffe
DATA $0180,$06d3
DATA $f401,$fffe
DATA $0180,$06c3
DATA $f501,$fffe
DATA $0180,$06b3
DATA $f601,$fffe
DATA $0180,$06a3
DATA $f801,$fffe
DATA $0180,$0693
DATA $f901,$fffe
DATA $0180,$0683
DATA $fa01,$fffe
DATA $0180,$0673
DATA $fb01,$fffe
DATA $0180,$0664
DATA $fc01,$fffe
DATA $0180,$0655
DATA $fd01,$fffe
DATA $0180,$0555
DATA $fe01,$fffe
DATA $0180,$0546
DATA $ff01,$fffe
DATA $0180,$0
DATA $ffff
RETURN
PROCEDURE usercop_lÄnge
DO
READ x%
EXIT IF x%=&HFFFF
INC anz& ! Anzahl Worte
LOOP
MUL anz&,2 ! Anzahl Bytes
RESTORE
RETURN
PROCEDURE memory_copperbereit
altcop%=LPEEK(_GfxBase+50) ! Copper-Auto-Vector relativ zu GFXBASE retten
mem&=76+anz&
u_copadr%=MALLOC(mem&,2)
neu_copadr%=u_copadr%
startcop%=altcop%+84
' Startliste des Systems kopieren
BMOVE startcop%,neu_copadr%,60
' Unsere Liste
CLR zeiger&,x%
RESTORE
' Unsern Adress-Zeiger erhöhen
ADD neu_copadr%,60
DO
READ x%
EXIT IF x%=&HFFFF
DPOKE neu_copadr%+zeiger&,x%
ADD zeiger&,2
LOOP
' End Liste des Systems kopieren
ADD startcop%,60
ADD neu_copadr%,anz&
BMOVE startcop%,neu_copadr%,16
RETURN
'
PROCEDURE user_copper_an
VSYNC ! Oder ~WaitTOF()
LONG{_GfxBase+50}=(u_copadr%)
RETURN
'
PROCEDURE user_copper_aus
VSYNC
LONG{_GfxBase+50}=(altcop%) ! Alten Vector zurück
x%=MFREE(u_copadr%,mem&)
RETURN